

                         TMM v1.0  -  HELP FILE  (04/06/2007)


GENERAL INFO:


      TMM only supports YV12 and YUY2 colorspaces!

      TMM builds a motion-mask for TDeint, which TDeint uses via its 'emask'
   parameter.  TMM can use fixed or per-pixel adaptive motion thresholds, as
   well as any length static period greater than or equal to six fields.  It
   checks backwards, across, and forwards when looking for motion.

   Syntax=>

	TMM(clip, int mode, int order, int field, int length, int mtype,
           int ttype, int mtqL, int mthL, int mtqC, int mthC, int nt,
           int minthresh, int maxthresh, int cstr)


   Examples =>

        mpeg2source()  // assume tff source that we want to bob
        tdeint(order=1,mode=1,emask=TMM(order=1,mode=1))


        mpeg2source()  // assume bff source, keep top field, same rate
        tdeint(order=0,field=1,emask=TMM(order=0,field=1)



PARAMETERS:


     mode -

         Same as the 'mode' parameter of TDeint.  This should be set equal to
         the value of 'mode' given to TDeint.  If using mode=2 in TDeint use
         mode=1 in TMM.

            0 -  same rate output
            1 -  double rate output

         Default:  0  (int)


     order -

         Same as the 'order' parameter of TDeint.  This should be set equal to
         the value of 'order' given to TDeint.

           -1 -  use order from Avisynth
            0 -  bff
            1 -  tff

         Default:  -1  (int)


     field -

         Same as the 'field' parameter of TDeint.  This should be set equal to
         the value of 'field' given to TDeint.  If using mode=1 (double rate
         output) then this setting does nothing.

           -1 -  set field equal to order
            0 -  keep bottom field
            1 -  keep top field

         Default:  -1  (int)


     length -

         Sets the number of fields required for declaring pixels as stationary.
         length=6 means six fields (3 top/3 bottom), length=8 means 8 fields
         (4 top/4 bottom), etc... This can be any value greater than or equal
         to 6 (can be even or odd).  A larger value for length will prevent
         more motion-adaptive related artifacts, but will result in fewer pixels
         being weaved.

         Default:  10  (int)


     mtype -

         Sets whether or not both vertical neighboring lines in the current
         field of the line in the opposite parity field attempting to be
         weaved have to agree on both stationarity and direction.  Possible
         values:

            0 - no
            1 - no for across, but yes for backwards/forwards
            2 - yes

         0 will result in the most pixels being weaved, while 2 will have the
         least artifacts.

         Default:  1  (int)


     ttype -

         Sets how to determine the per-pixel adaptive (quarter pel/half pel)
         motion thresholds. Possible values:

            0 - 4 neighbors, diff to center pixel, compensated
            1 - 8 neighbors, diff to center pixel, compensated
            2 - 4 neighbors, diff to center pixel, uncompensated
            3 - 8 neighbors, diff to center pixel, uncompensated
            4 - 4 neighbors, range (max-min) of neighborhood
            5 - 8 neighbors, range (max-min) of neighborhood

         compensated means adjusted for distance differences due to field
         vs frames and chroma downsampling. The compensated versions will
         always result in thresholds <= to the uncompensated versions.

         Default:  1  (int)


     mtqL/mthL/mtqC/mthC -

         These parameters allow the specification of hard thresholds instead
         of using per-pixel adaptive motion thresholds.  mtqL sets the quarter
         pel threshold for luma, mthL sets the half pel threshold for luma,
         mtqC/mthC are the same but for chroma. If these parameters are set to
         -1 then an adaptive threshold is used. Otherwise, if they are between
         0 and 255 (inclusive) then the value of the parameter is used as the
         threshold for every pixel.

         Default:  mtqL -  -1 (int)
                   mthL -  -1 (int)
                   mtqC -  -1 (int)
                   mthC -  -1 (int)


     nt/minthresh/maxthresh -

         nt sets the noise threshold, which will be added to the value of each
         per-pixel threshold when determining if a pixel is stationary or not.
         After the addition of 'nt', any threshold less than minthresh will be
         increased to minthresh and any threshold greater than maxthresh will
         be decreased to maxthresh.

         Default:  nt        -   2 (int)
                   minthresh -   4 (int)
                   maxthresh -  75 (int)


     cstr -

         Sets the number of required neighbor pixels (3x3 neighborhood) in the
         quarter pel mask, of a pixel marked as moving in the quarter pel mask,
         but stationary in the half pel mask, marked as stationary for the pixel
         to be marked as stationary in the combined mask.

         Default:  4  (int)



CHANGE LIST:


   v1.0 - (04/06/07)

      + initial release



TO DO LIST:


    - optimize




contact:   forum.doom9.org  nick = tritical  or  email:  kes25c@mizzou.edu
